Telegram Group & Telegram Channel
Сегодня я хочу поговорить о том, как избавиться от дублирования кода в Laravel, особенно в тех местах, где это совсем не бросается в глаза — в валидации запросов.

Проблема

У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.

Пример:


// StorePostRequest.php
return [
'title' => 'required|string|max:255',
'content' => 'required',
];



// UpdatePostRequest.php
return [
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required',
];


Решение — базовый класс с общими правилами

Создай абстрактный класс с общими правилами:


abstract class BasePostRequest extends FormRequest
{
protected function commonRules(): array
{
return [
'title' => 'string|max:255',
'content' => 'string',
];
}
}


А потом в наследниках добавляй нужные модификаторы:


// StorePostRequest.php
class StorePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'required',
'content' => 'required',
], $this->commonRules());
}
}



// UpdatePostRequest.php
class UpdatePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'sometimes|required',
'content' => 'sometimes|required',
], $this->commonRules());
}
}


🤔 Альтернатива — кастомная Rule-комбинация

Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.


Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.

А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?

👉 @php_lib
👍4👎4🔥2



tg-me.com/php_lib/735
Create:
Last Update:

Сегодня я хочу поговорить о том, как избавиться от дублирования кода в Laravel, особенно в тех местах, где это совсем не бросается в глаза — в валидации запросов.

Проблема

У тебя есть формы на создание и обновление сущности. И в обоих случаях в контроллере или Form Request’ах ты пишешь одинаковые правила валидации, только с небольшими отличиями.

Пример:


// StorePostRequest.php
return [
'title' => 'required|string|max:255',
'content' => 'required',
];



// UpdatePostRequest.php
return [
'title' => 'sometimes|required|string|max:255',
'content' => 'sometimes|required',
];


Решение — базовый класс с общими правилами

Создай абстрактный класс с общими правилами:


abstract class BasePostRequest extends FormRequest
{
protected function commonRules(): array
{
return [
'title' => 'string|max:255',
'content' => 'string',
];
}
}


А потом в наследниках добавляй нужные модификаторы:


// StorePostRequest.php
class StorePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'required',
'content' => 'required',
], $this->commonRules());
}
}



// UpdatePostRequest.php
class UpdatePostRequest extends BasePostRequest
{
public function rules(): array
{
return array_merge([
'title' => 'sometimes|required',
'content' => 'sometimes|required',
], $this->commonRules());
}
}


🤔 Альтернатива — кастомная Rule-комбинация

Можно пойти дальше и использовать кастомные Rule-классы, если валидация становится сложной и завязанной на бизнес-логику.


Я часто вижу дублирование в валидации, особенно в старых проектах. Убрав это, код становится чище, а изменения в правилах — в разы проще.

А ты как организуешь валидацию? Используешь Form Request или валидируешь прямо в контроллере?

👉 @php_lib

BY Библиотека PHP программиста 👨🏼‍💻👩‍💻


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/php_lib/735

View MORE
Open in Telegram


Библиотека PHP программиста ‍‍ Telegram | DID YOU KNOW?

Date: |

Importantly, that investor viewpoint is not new. It cycles in when conditions are right (and vice versa). It also brings the ineffective warnings of an overpriced market with it.Looking toward a good 2022 stock market, there is no apparent reason to expect these issues to change.

Can I mute a Telegram group?

In recent times, Telegram has gained a lot of popularity because of the controversy over WhatsApp’s new privacy policy. In January 2021, Telegram was the most downloaded app worldwide and crossed 500 million monthly active users. And with so many active users on the app, people might get messages in bulk from a group or a channel that can be a little irritating. So to get rid of the same, you can mute groups, chats, and channels on Telegram just like WhatsApp. You can mute notifications for one hour, eight hours, or two days, or you can disable notifications forever.

Библиотека PHP программиста ‍‍ from sg


Telegram Библиотека PHP программиста 👨🏼‍💻👩‍💻
FROM USA